#ifndef PROCESSORSTATE_H
#define PROCESSORSTATE_H

#include "crossbit/common.h"

namespace crossbit {
    class MemoryImage;
    // The Simulated Model of Source-Machine Processor State
    class ProcessorState {
        public:
            virtual ~ProcessorState() {}

			// added by zhangyichao, 2010-4-20
			virtual ProcessorState& operator=(const ProcessorState&) {}

            // Get the memory address of the simulated register.
            virtual XTMemAddr get(XTRegNum reg) {}
            virtual XTMemAddr fpGet(XTRegNum reg) {}

            // Get the value of the simulate register
            virtual XTInt32 reg(XTRegNum reg) {}

            virtual XTInt32 fpReg(XTRegNum reg) {}

            // Set the value of simulated register
            virtual void put(XTRegNum reg, XTInt32 value) {}
            virtual void fpPut(XTRegNum reg, XTInt32 value) {}

            // Get the number of *general-purpose* registers
            virtual int size() {}
            virtual int fpSize() {}

            virtual void dump() {}

			// added by zhangyichao, 2010-4-20
			virtual void dumpToFile( XTFile fd ) {}
			virtual void loadFromFile( XTFile fd ) {}
    };
}

#endif
